Systems and methods implementing user interface objects

ABSTRACT

According to some aspects, a system for providing voting interactions in a multi-party messaging application is provided. The system may include a memory, at least one processor coupled to the memory, and a user interface component executed by the at least one processor. The user interface component may be configured to present an interactive representation of a poll object in the multi-party messaging application, receive, from at least one user of the multi-party messaging application, a vote for an option of a plurality of options in the representation of the poll object, and update a vote count associated with the option in the representation of the poll object.

RELATED APPLICATIONS

The present application claims priority under 35 U.S.C. §119(e) to U.S.Provisional Application Ser. No. 61/993,822 title “SYSTEMS AND METHODSIMPLEMENTING USER INTERFACE OBJECTS,” filed May 15, 2014, which ishereby incorporated herein by reference in its entirety.

NOTICE OF MATERIAL SUBJECT TO COPYRIGHT PROTECTION

Portions of the material in this patent document are subject tocopyright protection under the copyright laws of the United States andof other countries. The owner of the copyright rights has no objectionto the facsimile reproduction by anyone of the patent document or thepatent disclosure, as it appears in the United States Patent andTrademark Office publicly available file or records, but otherwisereserves all copyright rights whatsoever. The copyright owner does nothereby waive any of its rights to have this patent document tomaintained in secrecy, including without limitation its rights pursuantto 37 C.F.R. §1.14.

BACKGROUND

1. Technical Field

The technical field relates generally to human computer interaction and,more particularly, to user interface objects that support enhancedmessaging and expression of user preferences.

2. Discussion

The information systems and software industry has produced a widevariety of user interface elements that enable users to interact withcomputer systems. Examples of these user interface elements includewindows, menus, icons, text boxes, radio buttons, and sliders. Theseuser interface elements may be found executing within a variety ofcontexts, such as web pages rendered by a browser and specializedapplications executed by mobile computing devices.

SUMMARY

According to various aspects and embodiments, an enhanced messagingsystem is configured to execute one or more graphical user interface(GUI) objects that interact with the user and other components of thesystem in an unconventional manner. More specially, in some embodiments,the enhanced messaging system executes a messaging application (e.g., atext messaging application) that implements one or more GUI objects thatperform actions based on the presence or absence of representations ofother GUI objects within a message thread. These actions may or may nothave a visible impact on any of the representations of the GUI objectsincluded within the message thread. For example, the actions may includeto movement of a representation of a GUI object from one position in themessage thread to another position in the message thread. The actionsmay also include modification of the representation of a GUI object orthe appearance of another component within the message thread. Theactions may also have an impact on systems external to, but in datacommunication with, the computer system (e.g., social media systems,advertisement servers, and other third party systems). Examples inaccord with these aspects and embodiments are described further below.

According to some aspects, a system for providing an interactive chatinterface is provided. The system may include a memory, at least oneprocessor coupled to the memory, and a user interface component executedby the at least one processor. The user interface component may beconfigured to present a representation of a first object within amessage thread, receive, from a user, a first user interface actionassociated with the representation of the first object, receive, fromthe user, an input that causes the first user interface action to beapplied to a target element associated with the chat interface, andexecute the first user interface action on the target element associatedwith the chat interface.

According to some embodiments, the target element includes arepresentation of a second object. In one embodiment, the representationof the second object may be configured to receive a second userinterface action and execute, in response to the execution of the firstuser interface action, the second user interface action. In thisembodiment, the representation of the second object is configured toreceive a second user interface action and execute, before the executionof the first user interface action, the second user interface action.

In one embodiment, the user interface component is configured to executethe first user interface action responsive to the representation of thefirst object being proximate to the target element. In this embodiment,the first user interface action is executed on a default target element.In one embodiment, the first user interface action may include ananimation. In this embodiment, the animation may include a route to thetarget element. The route may be based on relative positions of therepresentation of the first object and the target element. In thisembodiment, the route may be at least one of a line and a curve. In thisembodiment, the user interface component may be further configured toreceive a drag and drop on the representation of the first object to thetarget element to define the route.

In one embodiment, the first user interface action may include at leastone of a sound and a vibration. In one embodiment, the target elementmay include at least one of user name, a user icon, a background, akeyboard button, a poll object, a variable-selection object, an toimage, a video, a user profile, and a message. In one embodiment, theuser interface component may be further configured to restrict access toa plurality of objects including the first object, receive funds fromthe user for access to the plurality of objects including the firstobject, and allow use of the plurality of objects including the firstobject in response to the received funds from the user.

In one embodiment, the user interface component may be furtherconfigured to receive a duration by which the first user interfaceaction is executed. In one embodiment, the first representation mayinclude at least one of a bitmap image, a vector image, an animatedimage, a video, and a character of a special font. In one embodiment,the user interface component may further be configured to be implementedwithin a messaging application on a social media system. In oneembodiment, the user interface component may be further configured toreceive the target element from another user.

In one embodiment, the user interface component is further configured topresent configuration options for the first user interface actionassociated with the representation of the first object, receive at leastone configuration option for the first user interface action based onthe presented configuration options, and update the first user interfaceaction based on the received at least one configuration option.

According to some aspects, a graphical user interface (GUI) forproviding an interactive chat is provided. The GUI may include a displayon a computer system executed by at least one processor. The GUI may beconfigured to present a representation of a first object within amessage thread, receive, from a user, a first user interface actionassociated with representation of the first object, receive, from theuser, an input that causes the first user interface action to be appliedto a target element associated with the chat interface, and execute thefirst user interface action on the target element associated with thechat interface.

According to some aspects, a method for providing an interactive chat isprovided. The method may include presenting, by a user interfacecomponent on a mobile device, a representation of a first object withina message thread, receiving, from a user to the user interfacecomponent, a first user interface action associated with representationof the first object, receiving, from the user to the user interfacecomponent, an input that causes the first user interface action to beapplied to a target element associated with the chat interface, andexecuting, by the user interface component, the first user interfaceaction on the target element associated with the chat interface.

According to other aspects and embodiments, a computer system isconfigured to to execute one or more variable-selection objects thataccept user selections in a unique manner. More particularly, in someembodiments, the computer system implements one or morevariable-selection objects that prompt the user to make a selection. Inthese embodiments, variable-selection objects are configured to changethe input required to select the variable-selection object in responseto receiving a selection. For example, a variable-selection object mayincrease the duration of an input event required to select thevariable-selection object after having acknowledged a previousselection. Variable-selection objects may be employed in a variety ofapplications including as voting controls in polls, surveys, andcontests. Within these applications, voting controls provide benefitsincluding allowing multiple votes and avoiding accidental votes.Additional examples in accord with these aspects and embodiments aredescribed further below.

According to some aspects, a system for processing voting interactionsis provided. The system may include a memory, at least one processorcoupled to the memory, and a user interface component executed by the atleast one processor. The user interface component may be configured topresent a plurality of representations of variable-selection objects,receive a selection of a representation of the plurality ofrepresentations from a user, the representation including an inputrequirement to select the representation, and change the inputrequirement to select the representation in response to the receivedselection fulfilling the input requirement.

In one embodiment, the input requirement may include a duration requiredfor selecting the representation. In one embodiment, the user interfacecomponent configured to change the input requirement may be furtherconfigured to increase the duration required for selecting therepresentation. In this embodiment, the user interface component mayfurther configured to increase the duration at least one of linearly,exponentially, according to a user input, according to a lookup table,and randomly responsive to each received selection. In one embodiment,the selection may include a touch and hold of the at least onerepresentation. In one embodiment, the representation may include afirst color and wherein the user interface component is furtherconfigured to fill the representation from bottom to top with a secondcolor different than that color responsive to the touch and hold of therepresentation.

In one embodiment, the user interface component may be furtherconfigured to increase a vote count for the representation in responseto the received selection fulfilling the input requirement. In oneembodiment, the user interface component may be further configured totrack unique selections for each of the plurality of representations. Inone embodiment, the user interface component may be further configuredto track total selections for each of the to plurality ofrepresentations.

In one embodiment, the user interface component may be furtherconfigured to rank the plurality of representations and present theranked plurality of representations. In one embodiment, the userinterface component may be further configured to rank the plurality ofrepresentations by unique selections. In one embodiment, the userinterface component may be further configured to present an elementindicative of the number of selections made by each user for each of theplurality of representations. In one embodiment, the user interfacecomponent may be further configured to rank the plurality ofrepresentations by total selections for each of the plurality ofrepresentations. In one embodiment the user interface component may befurther configured to change at least one of a background color of therepresentation and a background shape of the representation.

In one embodiment, the user interface component may be furtherconfigured to change the color of the representation in response toreceiving the selection on the representation. In one embodiment, theuser interface component may be further configured to update therepresentation to mimic a checkbox in response to receiving theselection on the representation. In one embodiment, the user interfacecomponent may be further configured to cancel the selection and presentan error message in response the selection not meeting the inputrequirement. In one embodiment, the user interface component may befurther configured to present the plurality of representations within apoll.

According to some aspects, a graphical user interface (GUI) forprocessing voting interactions is provided. The GUI may include adisplay on a computer system executed by at least one processor. The GUImay be run via a processor coupled to a memory. The GUI may beconfigured to present a plurality of representations ofvariable-selection objects, receive a selection of a representation ofthe plurality of representations from a user, the representationincluding an input requirement to select the representation, and changethe input requirement to select the representation in response to thereceived selection fulfilling the input requirement.

According to some aspects, a method for processing voting interactionsis provided. The method may include presenting a plurality ofrepresentations of variable-selection objects, receiving a selection ofa representation of the plurality of representations from a user, therepresentation including an input requirement to select therepresentation, and changing the input requirement to select therepresentation in response to the received selection fulfilling theinput requirement.

According to other aspects and embodiments, a computer system isconfigured to to execute one or more poll objects that enable users in amulti-party messaging application (e.g., a group chat room, multipleparty message thread, or the like) to articulate preferences in a novelmanner. More particularly, in some embodiments, where there are morethan two users communicating in real time (or near real time) with oneanother, a user can create a representation of a poll object within thethread of communication. This poll object may be interactive, meaningthat users may express preferences via the representation of the pollobject at any time during the poll's existence. In some embodiments, thepoll object updates results within its representation in real time (ornear real time). In other embodiments, other users may insert newoptions within the representation of the poll object. Additionalexamples in accord with these aspects and embodiments are describedfurther below.

According to some aspects, a system for providing voting interactions ina multi-party messaging application is provided. The system may includea memory, at least one processor coupled to the memory, and a userinterface component executed by the at least one processor. The userinterface component may be configured to present an interactiverepresentation of a poll object in the multi-party messagingapplication, receive, from at least one user of the multi-partymessaging application, a vote for an option of a plurality of options inthe representation of the poll object, and update a vote countassociated with the option in the representation of the poll object.

In one embodiment, the user interface component may be furtherconfigured to receive a new option from a user and add the new option tothe plurality of options in the representation of the poll object. Inone embodiment, the user interface component may be further configuredto present an indication of the received vote on the option. In oneembodiment, the user interface component may be further configured topresent subsequent messages above the representation. In one embodiment,the user interface component may be further configured to present theplurality of options horizontally in the multi-party messagingapplication. In one embodiment, the user interface component may befurther configured to present a number of votes associated with eachoption of the plurality of options under the option.

In one embodiment, the user interface component may be furtherconfigured to present the plurality of options vertically in themulti-party messaging application. In one embodiment, the user interfacecomponent may be further configured to present a number of votesassociated with each option of the plurality of options to the right ofthe option. In one embodiment, the poll object may include at least onevariable-selection object. In one to embodiment, the user interfacecomponent may be further configured to receive a plurality of votes froma user for the option. In this embodiment, the user interface componentmay be further configured to track unique votes and total votes.

In one embodiment, the user interface component may be furtherconfigured to receive the vote for the option of the plurality ofoptions from a user interface object. In one embodiment, the userinterface object may include an animation. In one embodiment, the userinterface component may be further configured to receive the vote from atext input of the at least one user. In one embodiment, the userinterface component may be further configured to display votes receivedfrom other users in the multi-party messaging application. In oneembodiment, the user interface component may be further configured todisplay representations of the other users in the representation of thepoll object. In one embodiment, the user interface component may befurther configured to present a text message and media content in therepresentation.

In one embodiment, the user interface component may be furtherconfigured to: receive a second vote for a second option of a pluralityof options in the representation of the poll object and update a secondvote count associated with the second option in the representation ofthe poll object.

According to some aspects, a graphical user interface (GUI) forproviding a multi-party messaging application is provided. The GUI mayinclude a display on a computer system executed by at least oneprocessor coupled to a memory. The GUI may be configured to present aninteractive representation of a poll object in the multi-party messagingapplication, receive, from at least one user, a vote for an option of aplurality of options in the representation of the poll object, andupdate a vote count associated with the option in the representation ofthe poll object.

According to some aspects, a method for providing a multi-partymessaging application is provided. The method may include presenting, bya user interface component on a mobile device, an interactiverepresentation of a poll object in the multi-party messagingapplication, receiving, from at least one user to the user interfacecomponent, a vote for an option of a plurality of options in therepresentation of the poll object, and updating, by the user interfacecomponent, a vote count associated with the option in the representationof the poll object.

According to one aspect, a system including a memory, at least oneprocessor coupled to the memory, and a user interface component executedby the at least one processor is provided. The user interface componentis configured to display a first representation of a first to objectwithin a message thread, move the first representation from a firstlocation within the message thread to a second location within themessage thread, and execute, responsive to the first representationbeing proximate to a second representation of a second object, ananimation involving of the second representation.

Still other aspects, embodiments and advantages of these example aspectsand embodiments, are discussed in detail below. Moreover, it is to beunderstood that both the foregoing information and the followingdetailed description are merely illustrative examples of various aspectsand embodiments, and are intended to provide an overview or frameworkfor understanding the nature and character of the claimed aspects andembodiments. Any embodiment disclosed herein may be combined with anyother embodiment. References to “an embodiment,” “an example,” “someembodiments,” “some examples,” “an alternate embodiment,” “variousembodiments,” “one embodiment,” “at least one embodiment,” “this andother embodiments” or the like are not necessarily mutually exclusiveand are intended to indicate that a particular feature, structure, orcharacteristic described in connection with the embodiment may beincluded in at least one embodiment. The appearances of such termsherein are not necessarily all referring to the same embodiment.

BRIEF DESCRIPTION OF DRAWINGS

Various aspects of at least one embodiment are discussed below withreference to the accompanying figures, which are not intended to bedrawn to scale. The figures are included to provide an illustration anda further understanding of the various aspects and embodiments, and areincorporated in and constitute a part of this specification, but are notintended as a definition of the limits of any particular embodiment. Thedrawings, together with the remainder of the specification, serve toexplain principles and operations of the described and claimed aspectsand embodiments. In the figures, each identical or nearly identicalcomponent that is illustrated in various figures is represented by alike numeral. For purposes of clarity, not every component may belabeled in every figure. The patent or application file contains atleast one drawing executed in color. Copies of this patent or patentapplication publication with color drawing(s) will be provided by theOffice upon request and payment of the necessary fee. In the figures:

FIG. 1 is a block diagram of an enhanced messaging system;

FIG. 2 is a schematic diagram of a computer system;

FIG. 3 is an illustration of a screen provided by a text messageapplication;

FIG. 4 is an illustration of another screen provided by a text messageapplication;

FIG. 5 is an illustration of another screen provided by a text messageapplication;

FIG. 6 is an illustration of another screen provided by a text messageapplication;

FIG. 7 is an illustration of a message thread including representationsof GUI objects provided by an enhanced messaging system;

FIG. 8 is another illustration of a message thread includingrepresentations of GUI objects provided by the enhanced messagingsystem;

FIG. 9 is another illustration of a message thread includingrepresentations of GUI objects provided by the enhanced messagingsystem;

FIG. 10 is an illustration of an interaction between a user and theenhanced messaging system;

FIG. 11 is an illustration of a window provided by a GUI object of theenhanced messaging system;

FIG. 12 is an illustration of another window provided by a GUI object ofthe enhanced messaging system;

FIG. 13 is a flow diagram illustrating a segmented execution processexecuted by a GUI object within the enhanced messaging system;

FIG. 14 is an illustration of a user interface screen including arepresentation of a set of variable-selection objects;

FIG. 15 is an illustration of a user interaction with one of the set ofvariable-selection objects;

FIG. 16 is another illustration of a user interface screen including arepresentation of the set of variable-selection objects;

FIG. 17 is another illustration of a user interface screen including arepresentation of the set of variable-selection objects;

FIG. 18 is a flow diagram illustrating a selection process executed by avariable-selection object;

FIG. 19 is a flow diagram illustrating an action process executed by aGUI object within the enhanced messaging system;

FIG. 20 is a flow diagram illustrating a reaction process executed by aGUI object within the enhanced messaging system;

FIG. 21 is an illustration of a message thread including arepresentation of a poll object to provided by the enhanced messagingsystem;

FIG. 22 is another illustration of a message thread including arepresentation of a poll object provided by the enhanced messagingsystem;

FIG. 23 is another illustration of a message thread including arepresentation of a poll object provided by the enhanced messagingsystem;

FIG. 24 is another illustration of a message thread including arepresentation of a poll object provided by the enhanced messagingsystem;

FIG. 25 is a flow diagram illustrating a polling process executed by apoll object within the enhanced messaging system;

FIG. 26 is a block diagram of a data structure of a poll object;

FIG. 27 is a block diagram illustrating movement of a representation ofa GUI object relative to other components of a message thread;

FIG. 28 is an illustration of a gesture required by a selection methodof a variable-selection object; and

FIG. 29 includes several graphs that illustrate a variety of animationstyles.

DETAILED DESCRIPTION

Some embodiments disclosed herein include apparatus and processes thatimplement one or more GUI objects that perform actions not previouslyseen within the context of a communication session. For example,according to one embodiment, an enhanced messaging system is configuredto implement a message thread between two or more computer systems beingused by two or more users. Such a message thread may be displayed withinan interface of a messaging application. The message thread may extendbeyond its displayed portion and may include one or more message blocks,each of which may include a content frame.

In this embodiment, the computer systems engaged within the messagethread receive input from the users. This input may include a request toexecute a GUI object. Responsive to receiving such input, according tothis embodiment, the computer systems may implement a representation ofthe GUI object identified in the input within the message thread. Theimplemented representation of the GUI object may be dynamic (e.g., thelocation or appearance of the representation may change over time) orinteractive (e.g., the GUI object may perform actions in response to itsrepresentation encountering other components within the message thread,such as representation of other GUI objects). The representation may bebased on information stored in a bitmap image (e.g., a JPG, PNG, etc.),a vector image (e.g., to SVG, PDF, etc.), an animated image (e.g., GIF,etc.), a video (e.g., MP4, MOV, AVI, etc.), a character of a specialfont (e.g., Emoji, etc.), or other storage format.

Other embodiments disclosed herein include apparatus and processes thatimplement one or more variable-selection objects. In some embodiments, avariable-selection object is an object that varies an input required toacknowledge an attempted selection of the object based the number ofprevious acknowledged selections. For example, the variable-selectionobject may acknowledge a mouse click, a touch, or a tap as a selectionwhere the variable-selection object has not previously detected anattempted selection. Continuing this example, the variable-selectionobject may further acknowledge a subsequent mouse click, touch, or tapas a selection only if the subsequent mouse click, touch, or tap is heldfor a predetermined duration. Alternatively, the variable-selectionobject may acknowledge a hover as a first acknowledged selection, butmay require a double click, touch, or tap to acknowledge a secondselection. In other examples, as described further below with referenceto FIG. 28, the variable-selection object may require input matching apredefined shape or pattern to acknowledge a selection. In someexamples, the input required to acknowledge an attempted selection maybe referred to as a selection input requirement.

Variable-selection objects may be incorporated into a wide variety ofuser interface designs. For instance, variable-selection objects may beor may be included within the GUI objects discussed above.Alternatively, variable-selection objects may be implemented withinconventional user interface elements, such as screens and windows. Someexamples of such implementations are described further below.

Other embodiments disclosed herein include apparatus and processes thatimplement one or more poll objects. In some embodiments, a poll objectpresents options for selection by two or more of users within thecontext of a communication session between the two or more of users. Forexample, the poll object may present 3 options for movies playing at alocal theater and ask the group to select their movie of preference forlater viewing. As the poll object receives their selections, the pollobject updates its representation to express the current results of thepoll.

Like GUI objects and variable-selection objects, poll objects may beincorporated in a wide variety of user interface designs. It isappreciated that any of these objects may be included within an objectof another type (e.g., a variable-selection object may be included in apoll object which may, in turn, be included in a GUI object). All suchpermutations are within the scope of the embodiments disclosed herein.to Examples of the methods and systems discussed herein are not limitedin application to the details of construction and the arrangement ofcomponents set forth in the following description or illustrated in theaccompanying drawings. The methods and systems are capable ofimplementation in other embodiments and of being practiced or of beingcarried out in various ways. Examples of specific implementations areprovided herein for illustrative purposes only and are not intended tobe limiting. In particular, acts, components, elements and featuresdiscussed in connection with any one or more examples are not intendedto be excluded from a similar role in any other examples.

Also, the phraseology and terminology used herein is for the purpose ofdescription and should not be regarded as limiting. Any references toexamples, embodiments, components, elements or acts of the systems andmethods herein referred to in the singular may also embrace embodimentsincluding a plurality, and any references in plural to any embodiment,component, element or act herein may also embrace embodiments includingonly a singularity. References in the singular or plural form are notintended to limit the presently disclosed systems or methods, theircomponents, acts, or elements. The use herein of “including,”“comprising,” “having,” “containing,” “involving,” and variationsthereof is meant to encompass the items listed thereafter andequivalents thereof as well as additional items. References to “or” maybe construed as inclusive so that any terms described using “or” mayindicate any of a single, more than one, and all of the described terms.In addition, in the event of inconsistent usages of terms between thisdocument and documents incorporated herein by reference, the term usagein the incorporated references is supplementary to that of thisdocument; for irreconcilable inconsistencies, the term usage in thisdocument controls.

Enhanced Messaging System

Some embodiments disclosed herein implement an enhanced messaging systemusing one or more computer systems, such as the computer systemsdescribed below with reference to FIG. 2. According to theseembodiments, an enhanced messaging system establishes communicationsessions between a plurality of users and implements one or more GUIobjects within the communication sessions. FIG. 1 illustrates an exampleenhanced messaging system 100. As shown in FIG. 1, the enhancedmessaging system 100 includes users 102, 104, and 106, user interfaces108, 110, and 112, computer systems 114, 116, and 118, a communicationsnetwork 120, a message server 122, and one or more third party systems124. The computer system 114 includes one or more GUI objects 126 andone or more poll objects 132. The computer system 118 includes one ormore GUI objects 130 and one or more poll objects 134. The computersystem 116 includes one or more variable-selection objects 128.

As illustrated in FIG. 1, the computer systems 114, 116, and 118, themessage server 122, and the third party systems 124 exchange (i.e.transmit or receive) information via the network 120. The network 120may include any communication network through which computer systemsexchange information. For example, the network 120 may be a publicnetwork, such as the Internet, and may include other public or privatenetworks such as LANs, WANs, extranets, intranets, and cloud computingsystems. The network 120 may also include cellular networks such as LTE,4G, HSDPA/HSUPA, TD-SCDMA, W-CDMA, CMDA, WiFi, Bluetooth, EvDO, GSM,iDEN networks, or any other type of communication network. Althoughshown as a single network in FIG. 1, in some embodiments, the network120 includes a plurality of communication networks.

In an embodiment illustrated by FIG. 1, each of the users 102, 104, and106 respectively interacts (e.g., provide input or receive output) withthe user interfaces 108, 110, and 112. Each of the computer systems 114,116, and 118 is configured to respectively implement each of the userinterfaces 108, 110, and 112. In some embodiments illustrated by FIG. 1,the user interfaces 108, 110, and 112 are browser-based user interfacesserved by the message server 122. In other embodiments, the userinterfaces 108, 110, and 112 are implemented as components within socialmedia systems, such as the FACEBOOK social networking system availableonline from Facebook Inc. of Menlo Park, Calif. In still otherembodiments, the user interfaces 108, 110, and 112 are specializedclient programs that execute outside of a browser environment, such asan application program executing on a mobile device. The user interfaces108, 110, and 112 may be implemented using a variety of technologies andmay include sundry elements (e.g., screens, windows, buttons, boxes,etc.) arranged according to various user interface metaphors. Asdescribed further below, FIGS. 3-12, 14-17, and 21-24 further illustratesome of the elements and objects (e.g., the GUI objects 126 and 130, thevariable-selection object 128, and the poll objects 132 and 134) used toimplement the user interfaces 108, 110, and 112.

In some embodiments, the computer systems 114, 116, and 118 areconfigured to exchange information with the message server 122 via thenetwork 120 when establishing or otherwise implementing communicationsessions involving the user interfaces 108, 110, and 112. For instance,in one embodiment, a computer system (e.g., the computer system 114) toinitiating a communication session (e.g., a text message thread)communicates a request for one or more identifiers to the message server122. In response to receiving the request, the message server 122transmits a response that includes the requested identifiers, if therequested identifiers are stored in a directory accessible by themessage server 122. In response to receiving the identifiers in theresponse, the computer system initiating the communication sessioncontacts one or more computers identified in the response and executes acommunication session involving each computer system. This communicationsession may include the GUI objects disclosed herein.

In another embodiment, the message server 122 serves an even moreprominent role in that the message server 122 acts as a centralizedrelay for transmissions from each of the computer systems 114, 116, and118 engaged in a communication session. In this embodiment, the messageserver 122 receives transmissions from each of the computer systems 114,116, and 118 via the network 120 and relays the transmissions to thedestination computer system identified in the message. In anotherembodiment, the message server 122 only receives transmissions fromcomputer systems 114, 116, and 118 where the computer system attemptinga transmission is unable to complete the transmission. In thisembodiment, the message server 122 acts a storehouse of undeliverabletransmissions and periodically attempts to deliver them. In stillanother embodiment, the computer systems 114, 116, and 118 do notcommunicate with the message server 122 at all, but rather establish andexecute communication sessions directly with one another via the network120.

In some embodiments, the computer systems 114, 116, and 118 exchangeinformation with the third party systems 124. Examples of the thirdparty systems 124 include advertisement servers, the FACEBOOK socialnetworking system, the TWITTER social networking and microbloggingservice available online from Twitter, Inc. of San Francisco, Calif.,the FOURSQUARE location based social network system available onlinefrom Foursquare Labs, Inc. of New York, N.Y., the GOOGLE+ socialnetworking system available online from Google Inc. of Mountain View,Calif., the LINKEDIN social networking system available online fromLinkedin Corporation of Mountain View, Calif., mailing lists, emailsystems, texting systems, telephone systems, and the like. Theinformation exchanged between the computer systems 114, 116, and 118 andthe third party systems 124 may include data descriptive of identifiedusers of the computer systems 114, 116, and 118, such as indications ofthe validity of logon credentials, account information, and profileinformation, as well as data descriptive of the social network to whichthe identified users to belong, such as groups, friends, followers,other users commented on by the identified users, or other users whoauthored comments associated with the identified users. The informationexchanged between the computer systems 114, 116, and 118 and the thirdparty systems 124 may further include activity conducted by users of thecomputer systems 114, 116, and 118, such as activating particular GUIobjects or interacting with a variable-selection object in a predefinedmanner.

In other embodiments, the third party systems 124 include financialsystems, payment networks, and issuing banks. Examples of thesefinancial systems include the PAYPAL system available online fromPayPal, Inc. of San Jose, Calif., the YODLEE system available fromYodlee, Inc. of Redwood City, Calif., the DWOLLA system available fromDwolla Inc. of Des Moines, Iowa, and the like. Examples of paymentnetworks 126 include VISANET available from Visa, Inc. of San FranciscoCalif., BANKNET available from MasterCard International Incorporated ofPurchase, N.Y., and the like. Examples of issuing banks include CitibankN.A. of New York, N.Y., Capital One Financial Corporation of Richmond,Va., JPMorgan Chase & Co. of New York, N.Y., Bank of America Corporationof Charlotte, N.C., and the like. Example financial systems also includeescrow and payment processor services available from Balanced of PaloAlto, Calif. The information exchanged between the computer systems 114,116, and 118 and the financial systems may include data descriptivemethods of payment utilized by identified users and data descriptive oftransactions conducted by the identified users.

In some embodiments, the GUI objects 126 and 130 are configured to beimplemented within the user interfaces 108 and 112. The GUI objects 126and 130 may include, for example, executable code and data structuresthat, when executed and utilized by at least one processor of thecomputer systems 114 and 118, render graphical representations of theGUI objects 126 and 130 within the user interfaces 108 and 112. A user,such as the user 102 or the user 106, may interact with theserepresentations and may activate them as discussed further below. Therepresentations of the GUI objects 126 and 130 may include a widevariety of forms, colors, and characteristics. In addition, dynamic andinteractive features of the GUI objects 126 and 130 may alter theseforms, colors, and characteristics.

In various embodiments, the dynamic and interactive features of a GUIobject are controlled by values of one or more configurable parameters.These values may be default values or values configured by a user, forexample during the processes of activating a GUI object within themessage thread. Examples of the attributes of features that may becontrolled to by configurable parameters include a target of an actionexecuted by a GUI object, a route traveled by a representation of a GUIobject between a first position in the message thread and a secondposition within the message thread, an action performed by the GUIobject, a reaction performed by the GUI object in response to movementor an action performed by another GUI object, a timing or duration of anaction executed by the GUI object, whether or not an action executed bya GUI object repeats, a style of an animation performed by the GUIobject, sounds to be played during a duration of an action executed bythe GUI object, and other effects that may be applied by the GUI object.The animation that a GUI object is configured to perform may include anymovement or transformation. The GUI object may implement the animationas a series of image frames displayed at a predefined rate. As describedfurther below, the GUI object may execute animation once, repeat theanimation from beginning to end, or repeat the animation in a ping-pongmanner (i.e., execute the animation from beginning to end and then fromend to beginning).

According to some embodiments, the target of an action includes one ormore locations within a message thread as identified, for example, by aset of screen coordinates or context coordinates. The dimensions of ascreen coordinate system, which may be based on the physical resolutionof a display, may differ from the dimensions of a context coordinatesystem, which may be independent of the physical resolution of adisplay. For example, in one embodiment, the dimensions of a screencoordinate system are 640×1136 pixels. In this embodiment, a screencoordinate of (55, 80) equates to 55 pixels from the left and 80 pixelsfrom the top of the screen, where the origin pixel is top left. In sameembodiment, the dimensions of a message thread are substantially larger(e.g., 1000×3000). In this embodiment, a context coordinate of (100,345) equates to 100 points from the left and 345 points from the top ofthe thread, where the origin point is top left.

In some embodiments, targets of actions also include one or morecomponents within the message thread as identified, for example, by aname, memory address, pointer, reference, or tag. Targets of actions mayalso include one or more components displayed within a user interfaceimplementing the GUI object as identified, for example, by the componenttype, the component status, the function of the component, the behaviorof the component, the author of the component, the name of thecomponent, the color of the component, the relative of absolute locationof the component, the minimum size of the component, the maximum size ofthe component, the current size of the component, and the time componentwas created. Examples of component types that may be used to identifytargets of actions include user names, user icons, backgrounds, otherGUI objects, keyboard buttons, and messages (e.g., text messages, imagemessages, video messages, and sound or voice messages). One example of acomponent status that may be used to identify a target of an actionincludes whether the component is in an animated state or is not in ananimated state. Another example of a component status that may be usedto identify a target of an action includes whether a user that thecomponent represents is online or offline.

In some embodiments, the route of a GUI object includes one or morelocations that that a representation of the GUI object is configuredtraverse to reach the target of the GUI object. The route may becontinuous or include a set of discrete points. The route may follow aline, a curve, or be based on guard distances from other components inthe message thread (e.g. to avoid collisions) as illustrated in FIG. 27.In various embodiments, the action of a GUI object includes an animationthat may or may not be accompanied by other stimulus, such as sound orvibration. The GUI object may perform the animation on its ownrepresentation or may perform the animation in conjunction with anothercomponent in the message thread, such as a representation of another GUIobject. In some embodiments, an action configurable parameter includes atype identifier that is used to group similar actions together. Thistype identifier may facilitate navigation of large numbers of actionswithin configuration user interfaces. In other embodiments, if thetarget is not found within the message thread or is not specified by thetarget configurable parameter, the GUI object executes the animationagainst a default target (e.g., the component nearest the representationof the GUI object, a specific location in the message thread, and thelike). In at least one embodiment, the action of a GUI object includesinteractions with third party systems, such as the third party systems124 described above with reference to FIG. 1. In this embodiment, theaction may include fetching an advertisement from an advertisementserver, transmitting sentiment information to a social media website,and initiating a purchase transaction by transmitting information to afinancial system. In one embodiment, the action of a GUI object includesmusic that may be played during a duration in which a GUI object beginsan action, a GUI object is on a route to a target, a GUI object reachesa target, or any combination of durations.

In some embodiments, the reaction of a GUI object includes an animationthat may or may not be accompanied by other stimulus, such as sound orvibration. In these embodiments, the other stimulus may be activatedduring a duration in which the GUI object begins an action, is on aroute to a target, reaches a target, or any combination of durations.The GUI object may perform the animation on its own representation ormay perform the animation in conjunction with another component in themessage thread, such as a representation of the GUI object to which theGUI object is reacting. For example, if a first representation of afirst GUI object receives a kiss from a second representation of asecond GUI object, the second GUI object may react by executing ananimation in which the second representation kisses the firstrepresentation back. In at least one embodiment, the reaction of a GUIobject includes interactions with third party systems, such as the thirdparty systems 124 described above with reference to FIG. 1. In thisembodiment, the action may include fetching an advertisement from anadvertisement server, and transmitting sentiment information to a socialmedia website.

In some embodiments, a GUI object may have different selectableanimations. The different selectable animations may be based on thetarget object. For example, if a target object is another GUI object,the GUI object may kiss the other GUI object. If the target object istext, the GUI object may eat the text. The animations may becustomizable based on user preferences.

In at least one embodiment, a GUI object begins an action including ananimation after a user sets up the action. In some examples, the GUIobject may receive a click on a GUI object from a menu of GUI objectsand display a menu of options. The menu of options may include anaction, an action type, timing of an action, effects of an action, and areaction. The action may include the movement of the GUI object. The GUIobject may receive a drag to a target object. The GUI object mayalternatively receive a click on a target object and automaticallyperform the action on the target object. The timing of the action may beused to specify the length of the action and the speed of the action.The effect of an action may include what happens after an action (e.g.,red lips on the target object at the end of a kiss action or a bombexploding and making the screen of the phones of message participantslook broken for a few seconds).

In another embodiment, a GUI object may perform an animation in responseto being targeted by another GUI object. In these embodiments, theanimation may be a reaction. For example, a representation of a firstGUI object may be targeted by a representation of a second GUI objectand the representation of the first GUI object may execute an animationin which the representation of the first GUI object moves off the screenbefore the representation of the second GUI object reaches therepresentation of the first GUI object.

A reaction to an action may include an action the GUI object may take ifit is chosen as to the target object of another GUI object. For example,a message or GUI object may include a reaction effect to create arepresentation of a bubble around the message or GUI object when themessage or GUI object is chosen as a target for a representation of abomb. In response to the message or GUI object being targeted by therepresentation of a bomb, the message or GUI object may be covered by arepresentation of a bubble and the representation of the bubble mayanimate to deflect the bomb. The reaction may be specified by a user.Reactions may not be limited to certain actions. For example, therepresentation of the bubble may not be limited as a reaction to a bomb.If an action was a kiss, the representation of the bubble may, forexample, receive the kiss and pop.

According to various embodiments, the timing of a GUI object indicates aduration of an action (e.g., an animation) or a delay before an action(transmitting information to a third party system) is taken. In someembodiments, the number of repeats of a GUI object indicates a number ofrepetitions of an action to be executed by the GUI object. Where theaction is an animation, the number of repeats configurable parameter mayinclude a repetition type identifier. Where the repetition typeidentifier is set to a normal value, each repetition of the animationexecutes a normal start to finish. Where the repetition type identifieris set to a ping-pong value, each repetition of the animation executesin reverse from the previous repetition.

In some embodiments, the animation style of a GUI object indicates oneor more variations in the displayed rate of change within the animation.FIG. 29 illustrates several animation styles in the form of graphs. Ineach of the graphs presented in FIG. 29, the slope of the curvepresented in each graph represents the displayed rate of change withinan animation at an elapsed time represented by the horizontal axis.Examples of the animation styles include linear, ease-in (e.g., slowstarting), ease-out (e.g., slow ending), ease-in-and-out, decay (faststarting), spring (fast starting followed by oscillation) and custom(e.g., a set of frame speeds specified by the user). A linear animationstyle is illustrated by the graph 2906. An ease-in animation style isillustrated by the graph 2910. An ease-out animation style isillustrated by the graph 2912. An ease-in-and-out animation style isillustrated by the graph 2908. A decay animation style is illustrated bythe graph 2902. A spring animation style is illustrated by the graph2900. A custom animation style is illustrated by the graph 2904. Alinear animation style causes activity displayed within an animation tooccur evenly (e.g., full speed) over its duration. An ease-in animationstyle causes the animation to begin slowly (e.g., half speed), and thenspeed up as it progresses (e.g., full speed). An ease-out animationstyle causes the animation to begin quickly (e.g., full speed) and thenslow down (e.g., half speed) near to completion. An ease-in ease-outanimation style causes the animation to begin slowly (e.g., half speed),accelerate (e.g., full speed) through the middle of its duration, andthen slow again (e.g., half speed) before completing. A spring animationstyle causes the animation to begin rapidly (e.g., faster than normalfull speed) and then oscillate in an attenuating waveform. A decayanimation style causes the animation to begin rapidly and then slowbefore completing. Under a custom animation style, the animation'sdisplayed rate of change adjusts according to a set of user specifiedvalues.

In some embodiments, GUI objects implement a key frame animation stylein which the user specifies two or more key frames and the GUI objectautomatically interpolates one or more intermediate frames according toan interpolation method and displays all frames according to one of theother animation styles described above.

According to various embodiments, the target of an action by a GUIobject may include a section of the user interface. Targeted sections ofthe user interface may include, for example, a user name, a backgroundof a chat, a keyboard of a user, media sent in the chat, messages in thechat, and the user interface as a whole. For example, a representationof a GUI object may drop a bowling ball and display a cracked screen. Inanother example, a GUI object action may include switching two messagesin a chat.

According to one embodiment, GUI objects may interact with elementsoutside of a chat. For example, a user may receive a GUI object with thewords “call me” on it. If the receiving user clicks on the GUI object,the receiving user's device may call the sending user's device. Inanother embodiment, the GUI object may display a message for a receivinguser to confirm or reject a call, and in response to a confirmation,call the sending user. In another example, the GUI object may click on alink sent within the chat. For example, a link to a webpage may be sentfollowed by a GUI object to click on the link. In this example, the GUIobject may cause the receiving device to direct to a page via the link.In another example, the user interface may display a request forpermission to navigate to the page in the link. The GUI object mayfurther be configured to change a background color, theme, or image.

In some examples, a GUI object may be configured to edit a keyboard on atarget device's user interface. Also, in another example, GUI object maymove to a keyboard and send a message or replace keys on the keyboard.

In some embodiments, GUI objects may be displayed in a locked stateuntil the user interface receives payment from a user to unlock the GUIobjects. GUI objects may be associated with prices and sold via, forexample, micro transactions within an application. The to locked statemay be shaded to indicate that the GUI objects are not available. Inother embodiments, one or more GUI objects may be unlocked for a limitednumber of uses before being locked for purchase. An administrator of themessaging application may create new objects with new animations andsell those objects for use in the messaging application.

In at least one embodiment, users of a messaging application may createobjects and upload a set of objects for sale to other users. Users ofthe messaging application may browse through GUI object sets for sale.In some examples, a limited number of GUI objects within the set may beused for free, and other GUI objects may be locked until a user sends apayment to use the other GUI objects. In one embodiment, payment for aset of GUI objects may be sent directly to a user by credit card orPaypal. In some examples, sets of GUI objects may also be sentseparately and imported into the messaging application. In theseexamples, the GUI objects may be bought, for example, from the GooglePlay Store on an Android device or the App Store on an iOS device.

In some embodiments, other effects that may be applied by a GUI objectinclude application of a transform or a filter to a representation ofthe GUI object or its target. Examples of transformations includechanging the color or color tone of a representation of the GUI object,changing the size of a representation of the GUI object, changing theposition of a representation of the GUI object, changing the orientationof a representation of the GUI object, changing the depth of arepresentation of the GUI object, merging several components with arepresentation of the GUI objects, and splitting a representation of theGUI objects into multiple components. In some embodiments, atransformation may be implemented using a filter. Additional descriptionof the features that GUI objects are configured to execute is providedbelow with reference to FIGS. 3-12.

In various embodiments, GUI objects are configured to perform one ormore actions or reactions in distinct segments. One example of a segmentexecution process in accord with these embodiments is described furtherbelow with reference to FIG. 13. One example of an action executionprocess is accord with these embodiments is described further below withreference to FIG. 19. One example of a reaction execution process isaccord with these embodiments is described further below with referenceto FIG. 20.

In some embodiments, the variable-selection object 128 is configured tobe implemented within the user interface 110. The variable-selectionobject 128 may include, for example, executable code and data structuresthat, when executed and utilized by at least one to processor of thecomputer system 116, render a graphical representation of thevariable-selection object 128 within the user interface 110. Therepresentation of the variable-selection object 128 may include a widevariety of forms, colors, and characteristics. For instance, therepresentation may include an image, a shape, and descriptive text.Examples of shapes support in some embodiments include circles,rectangles, triangles, ovals, other polygons and user defined shapes.The descriptive text may be located on, below, or next to therepresentation. In addition, dynamic features of the variable-selectionobject 128 may alter these forms, colors, and characteristics.

In various embodiments, the dynamic features of a variable-selectionobject 128 are controlled by values of one or more configurableparameters. These values may be default values or values configured by auser, for example during the process of developing an application thatincludes the variable-selection object. Examples of the attributes offeatures that may be controlled by configurable parameters include ashape identifier, a progress indicator identifier, and a selectionvector.

In some embodiments, the shape identifier determines the shape andcontent of the representation of the variable-selection object. Theprogress identifier determines the animated visual metaphor employed toindicate progress. Examples of these metaphors include a water level, aclock, and a progress bar. Additionally, the progress animation mayindicate progress with or without employing a metaphor by changing thesize of representation, changing a color of the representation, orchanging the position of the representation.

In a variety of embodiments, the selection vector includes a set of namevalue tuples that define a selection method for each of a series ofselection acknowledgements. For example, a first member of the selectionvector may indicate that a touch and hold of 1 second is required for afirst selection acknowledgement, a touch and hold of 2 seconds isrequired for a second selection acknowledgement, a touch and hold of 5seconds is required for a third selection acknowledgement, and aquadruple tap followed by a touch and hold of 20 seconds is required fora fourth selection acknowledgement. In other embodiments, the selectionvector is stored as a linear function that directly relates the holdtime required for selection acknowledgement to the number of previouslyacknowledged selections. For example, the linear function may require atouch and hold for 1 second for the first selection acknowledgement, atouch and hold for 2 seconds for the second selection acknowledgement, atouch and hold for 10 seconds for the tenth selection acknowledgement,and so on. In other embodiments, the selection vector implements aholding period according to an arbitrary to mathematical function or setof numbers.

In some embodiments directed toward computer systems including a touchscreen, input that may be required by a selection method for any givenselection acknowledgement includes a touch down (inside or outside ofthe vicinity of the representation of a variable-selection object), atouch up (inside or outside of the vicinity of the representation of avariable-selection object), a touch down repeat, a touch drag (inside oroutside of the vicinity of the representation of a variable-selectionobject), a touch drag through (enter or exit of the vicinity of therepresentation of a variable-selection object), and a touch cancel (dueto interruption such as view disappearing or an incoming call).Alternatively or additionally, variable-selection objects may implementselection methods that require input including drawing or tracing one ormore shapes (e.g., polygons, letters, irregular shapes, etc.). In someembodiments, the variable-selection objects are configured to increasethe difficulty level of the shapes as a user continues to receiveselection acknowledgements. The difficulty level of the shapes may beincreased by requiring more instances of a shape (e.g., 2 squares, 3squares, etc.) or more complex shapes a star, a smiley face, or thelike. One example where the selection method requires a square isillustrated in FIG. 28. According to some embodiments, avariable-selection object may define a vicinity that is larger orsmaller than the visible boundary of its representation. This allows thevariable-selection object to adjust error tolerance for a better userinteraction experience. For example, the user's finger may inaccuratelytap outside of the actually representation boundary, but thevariable-selection object may still recognize the event as a tap insidethe representation where the tap occurs inside a predefined vicinity(e.g., 10 pixels) of a border of the representation. In theseembodiments, the vicinity is a configurable parameter.

In some embodiments a graphical representation of a variable-selectionobject 128 may change color based on how many selection attempts aremade by a user. For example, the graphical representation of thevariable-selection object may begin in dark blue at 0 votes, change tolight blue at 10 votes, change to yellow at 25 votes, and change to redat 50 votes. The colors of the graphical representations may beconfigured to change into different colors based on users and votingtopics. Notably, the color may be used as an indicator of how strong avote signal relating to an object is.

In various embodiments, a selection vector may alter the manner in whicha variable-selection object acknowledges selections based on a varietyof additional factors. For example, in some embodiments, a selectionvector is configured to alter one or more selection methods used by avariable-selection object based on a number of selections made by allusers of an application, based on a number of selections made by aparticular user, or based on a time interval between previous selectionsmade by a particular user. For instance, the selection vector may bebased on a linear function that relates the number of previous users whohave made an acknowledged selection to a required hold duration for thenext selection acknowledgement. In this example, the selection vectormay specify that a first user must touch and hold the variable-selectionobject for a duration 1 second to receive a selection acknowledgement,that a second user must touch and hold for a duration of 2 seconds toreceive a selection acknowledgement, that a tenth user must touch andhold for a duration of 10 seconds to receive a selectionacknowledgement, and so on. In another example, the selection vectorencodes a sequence of numbers that are a product of trial and erroranalysis conducted by an interface designer. In this example, theselection vector may specify a series of arbitrary durations foracknowledgement of sequential touch and holds.

In another example, a selection vector is configured to alter the timerequired for a variable-selection object to acknowledge one or moreselections based on a number of prior selections made by a user. In thisexample, the selection vector specifies that a first selection attempt(e.g. a touch and hold) by the user must have a duration of 0.5 secondsto receive a selection acknowledgment by the variable-selection object.Continuing this example, the selection vector also specifies that asecond attempt by the user must have a duration of 1 second to receive aselection acknowledgment. Also, according to this example, the selectionvector specifies that a tenth selection attempt by the user must have aduration of 5 seconds to receive a selection acknowledgment. Thus,according to this example, the more selections previously made by auser, the longer the time required make subsequent selections.

In another example, a selection vector is configured to alter the timerequired for a variable-selection object to acknowledge one or moreselections based on a time interval between previous selections made bya particular user. In this example, the selection vector specifies thata first selection attempt (e.g., a touch and hold) by the user must havea duration of 0.5 seconds to receive a selection acknowledgment by thevariable-selection object. Continuing this example, the selection vectoralso specifies that where the time elapsed from a previous selection toa selection attempt is less than 1 minute, the selection attempt musthave a duration of 20 seconds to receive a selection acknowledgement.Also, according to this example, the selection vector specifies thatwhere the time elapsed from a previous selection to a selection attemptis greater than 1 minute but less than 5 minutes, the selection attemptmust have a duration of 10 seconds to receive a selectionacknowledgement. Moreover, according to this example, the selectionvector specifies that where the time elapsed from a previous selectionto a selection attempt is greater than 5 minute but less than 10minutes, the selection attempt must have a duration of 5 seconds toreceive a selection acknowledgement. Finally, according to this example,the selection vector specifies that where the time elapsed from aprevious selection to a selection attempt is greater than 10 minutes,the selection attempt must have a duration of 1 second to receive aselection acknowledgement. Thus, according to this example, the morerecent a previous selection made by a user, the longer the time requiredmake subsequent selections.

In another example, the selection vector may be based on a linearfunction that relates the time interval lapsed since the most recentacknowledged selection by a user to a required hold duration for thenext selection acknowledgement. In this example, the selection vectormay specify that a user touch and hold the variable-selection object fora duration 10 seconds to receive a selection acknowledgement if theuser's previous selection acknowledgement occurred within the lastminute, that the user touch and hold for a duration of 9 seconds if theprevious selection acknowledgement occurred between one and two minutesin the past, and so on. Additional description of the features thatvariable-selection objects are configured to execute is provided belowwith reference to FIGS. 14-17. In various embodiments,variable-selection objects are configured to perform one or moreselection processes. One example of a selection process in accord withthese embodiments is described further below with reference to FIG. 18.

In some embodiments, the poll objects 132 and 134 are configured to beimplemented within the user interfaces 108 and 112. The poll objects 132and 134 may include, for example, executable code and data structuresthat, when executed and utilized by at least one processor of thecomputer systems 114 and 118, render graphical representations of thepoll objects 132 and 134 within the user interfaces 108 and 112. Oneexample of a message data structured generated by the poll objects 132and 134 is described further below with reference to FIG. 26. A user,such as the user 102 or the user 106, may interact with theserepresentations and may activate them as discussed further below. Therepresentations of the poll objects 132 and 134 may include a widevariety of forms, colors, and characteristics.

In some embodiments, the poll objects 132 and 134 are configured togenerate messages that conform to a message data structure 2600illustrated in FIG. 26. As shown in to FIG. 26, the message datastructure 2600 includes a variety of configurable parameters: a messageheader 2602, message content 2604, and polling extensions 2606. Themessage header 2602 includes a message identifier, a message typeidentifier and additional metadata descriptive of the message. Inembodiments in accord with FIG. 26, the message type identifier stores avalue of “Poll” so that the user interfaces 108 and 112 will properlyrender a representation of a poll object within a message thread inresponse to receiving the message data structure 2600. Also in theseembodiments, the message content 2604 stores text or other content to bedisplayed within the representation of the poll object.

According to at least one embodiment, a poll object 134 may be avariable-selection object 128. In these embodiments, the poll object 134may include a selection vector configured to alter the time required forthe poll object 134 to acknowledge one or more selections based on anumber of prior selections made by a user. The number of selections madefor each poll object 134 may be displayed next to a representation ofthe poll object as well as representations of the users who selected thepoll object 134.

According to some embodiments illustrated by FIG. 26, the pollingextensions 2606 include a polling control header and one or more pollingoptions. In these embodiments, the polling control header stores valuesthat specify the operation of the representation of a poll object.Examples of the operations controllable via these values include whetherto allow other users to add the poll options, whether to allow users tochange a previous selection to a new selection, the expiration date ofthe poll object, whether the representation of the poll shows pollresults to a user before receiving input indicating a preference of theuser, the user interface layout scheme of the representation of the pollobject, and whether the representation of the poll object displays useridentifiers or maintains anonymity. In some embodiments, the one or morepolling options store values that specify information related to eachpossible poll option available for selection. This information mayinclude a title of the option, an image to represent or be displayed inconjunction with the option, video to represent or be displayed inconjunction with the option, sound to represent or be provided inconjunction with the option or selection of the option, music torepresent or be displayed in conjunction with the option or selection ofthe option, a link to represent or be displayed in conjunction with theoption, etc. The information related to each possible poll options mayalso include a count of the number of times the option has been selectedand identifiers of the users who selected the option. Additionaldescription of the features that poll objects are configured to executeis provided below with reference to FIGS. 21-24.

In various embodiments, poll objects are configured to perform one ormore polling processes. One example of a polling process in accord withthese embodiments is described further below with reference to FIG. 25.

Information may flow between the components illustrated in FIG. 1, orany of the elements, components and subsystems disclosed herein, using avariety of techniques. Such techniques include, for example, passing theinformation over a network using standard protocols, such as TCP/IP,HTTP, or HTTPS, passing the information between modules in memory andpassing the information by writing to a file, database, data store, orsome other nonvolatile data storage device, among others. In addition,pointers or other references to information may be transmitted andreceived in place of, in combination with, or in addition to, copies ofthe information. Conversely, the information may be exchanged in placeof, in combination with, or in addition to, pointers or other referencesto the information. Other techniques and protocols for communicatinginformation may be used without departing from the scope of the examplesand embodiments disclosed herein.

Computer System

As discussed above with regard to FIG. 1, various aspects and functionsdescribed herein may be implemented as specialized hardware or softwarecomponents executing in one or more computer systems. There are manyexamples of computer systems that are currently in use. These examplesinclude, among others, network appliances, personal computers,workstations, mainframes, networked clients, servers, media servers,application servers, database servers, and web servers. Other examplesof computer systems may include mobile computing devices (e.g., smartphones, tablet computers, and personal digital assistants) and networkequipment (e.g., load balancers, routers, and switches). Examples ofparticular models include iPhones, iPads, and iPod touches running iOSoperating system available from Apple, Android devices like SamsungGalaxy Series, LG Nexus, and Motorola Droid X, Blackberry devicesavailable from Blackberry Limited, and Windows Phone devices. Further,aspects may be located on a single computer system or may be distributedamong a plurality of computer systems connected to one or morecommunications networks.

For example, various aspects, functions, and processes may bedistributed among one or more computer systems configured to provide aservice to one or more client computers, or to perform an overall taskas part of a distributed system. Additionally, aspects may be performedon a client-server or multi-tier system that includes componentsdistributed among to one or more server systems that perform variousfunctions. Consequently, embodiments are not limited to executing on anyparticular system or group of systems. Further, aspects, functions, andprocesses may be implemented in software, hardware or firmware, or anycombination thereof. Thus, aspects, functions, and processes may beimplemented within methods, acts, systems, system elements andcomponents using a variety of hardware and software configurations, andexamples are not limited to any particular distributed architecture,network, or communication protocol.

Referring to FIG. 2, there is illustrated a block diagram of adistributed computer system 200, in which various aspects and functionsare practiced. As shown, the distributed computer system 200 includesone or more computer systems that exchange information. Morespecifically, the distributed computer system 200 includes computersystems 202, 204, and 206. As shown, the computer systems 202, 204, and206 are interconnected by, and may exchange data through, acommunication network 208. The network 208 may include any communicationnetwork through which computer systems may exchange data. To exchangedata using the network 208, the computer systems 202, 204, and 206 andthe network 208 may use various methods, protocols and standards,including, among others, Fibre Channel, Token Ring, Ethernet, WirelessEthernet, Bluetooth, IP, IPV6, TCP/IP, UDP, DTN, HTTP, FTP, SNMP, SMS,MMS, SS7, JSON, SOAP, CORBA, REST, and Web Services. To ensure datatransfer is secure, the computer systems 202, 204, and 206 may transmitdata via the network 208 using a variety of security measures including,for example, SSL or VPN technologies. While the distributed computersystem 200 illustrates three networked computer systems, the distributedcomputer system 200 is not so limited and may include any number ofcomputer systems and computing devices, networked using any medium andcommunication protocol.

As illustrated in FIG. 2, the computer system 202 includes a processor210, a memory 212, an interconnection element 214, an interface 216 anddata storage element 218. To implement at least some of the aspects,functions, and processes disclosed herein, the processor 210 performs aseries of instructions that result in manipulated data. The processor210 may be any type of processor, multiprocessor or controller. Exampleprocessors may include a commercially available processor such as anIntel Xeon, Itanium, Core, Celeron, or Pentium processor; an AMD Opteronprocessor; an Apple A4 or A5 processor; a Sun UltraSPARC processor; anIBM Power5+ processor; an IBM mainframe chip; or a quantum computer. Theprocessor 210 is connected to other system components, including one ormore memory devices 212, by the interconnection element 214.

The memory 212 stores programs (e.g., sequences of instructions coded tobe executable by the processor 210) and data during operation of thecomputer system 202. Thus, the memory 212 may be a relatively highperformance, volatile, random access memory such as a dynamic randomaccess memory (“DRAM”) or static memory (“SRAM”). However, the memory212 may include any device for storing data, such as a disk drive orother nonvolatile storage device. Various examples may organize thememory 212 into particularized and, in some cases, unique structures toperform the functions disclosed herein. These data structures may besized and organized to store values for particular data and types ofdata.

Components of the computer system 202 are coupled by an interconnectionelement such as the interconnection element 214. The interconnectionelement 214 may include any communication coupling between systemcomponents such as one or more physical busses in conformance withspecialized or standard computing bus technologies such as IDE, SCSI,PCI and InfiniBand. The interconnection element 214 enablescommunications, including instructions and data, to be exchanged betweensystem components of the computer system 202.

The computer system 202 also includes one or more interface devices 216such as input devices, output devices and combination input/outputdevices. Interface devices may receive input or provide output. Moreparticularly, output devices may render information for externalpresentation. Input devices may accept information from externalsources. Examples of interface devices include keyboards, mouse devices,trackballs, microphones, touch screens, printing devices, displayscreens, speakers, network interface cards, etc. Interface devices allowthe computer system 202 to exchange information and to communicate withexternal entities, such as users and other systems.

The data storage element 218 includes a computer readable and writeablenonvolatile, or non-transitory, data storage medium in whichinstructions are stored that define a program or other object that isexecuted by the processor 210. The data storage element 218 also mayinclude information that is recorded, on or in, the medium, and that isprocessed by the processor 210 during execution of the program. Morespecifically, the information may be stored in one or more datastructures specifically configured to conserve storage space or increasedata exchange performance. The instructions may be persistently storedas encoded signals, and the instructions may cause the processor 210 toperform any of the functions described herein. The medium may, forexample, be optical disk, magnetic disk or flash to memory, amongothers. In operation, the processor 210 or some other controller causesdata to be read from the nonvolatile recording medium into anothermemory, such as the memory 212, that allows for faster access to theinformation by the processor 210 than does the storage medium includedin the data storage element 218. The memory may be located in the datastorage element 218 or in the memory 212, however, the processor 210manipulates the data within the memory, and then copies the data to thestorage medium associated with the data storage element 218 afterprocessing is completed. A variety of components may manage datamovement between the storage medium and other memory elements andexamples are not limited to particular data management components.Further, examples are not limited to a particular memory system or datastorage system.

Although the computer system 202 is shown by way of example as one typeof computer system upon which various aspects and functions may bepracticed, aspects and functions are not limited to being implemented onthe computer system 202 as shown in FIG. 2. Various aspects andfunctions may be practiced on one or more computers having a differentarchitectures or components than that shown in FIG. 2. For instance, thecomputer system 202 may include specially programmed, special-purposehardware, such as an application-specific integrated circuit (“ASIC”)tailored to perform a particular operation disclosed herein. Whileanother example may perform the same operation using a grid of severalgeneral-purpose computing devices running MAC OS System X with Intelprocessors and several specialized computing devices running proprietaryhardware and operating systems.

The computer system 202 may be a computer system including an operatingsystem that manages at least a portion of the hardware elements includedin the computer system 202. In some examples, a processor or controller,such as the processor 210, executes an operating system. Examples of aparticular operating system that may be executed include a Windows-basedoperating system, such as, Windows NT, Windows 2000 (Windows ME),Windows XP, Windows Vista, Windows Phone, or Windows 7 operatingsystems, available from the Microsoft Corporation, Android operatingsystem available from Google, Blackberry operating system available fromBlackberry Limited, a MAC OS System X operating system or an iOSoperating system available from Apple, one of many Linux-based operatingsystem distributions, for example, the Enterprise Linux operating systemavailable from Red Hat Inc., a Solaris operating system available fromOracle Corporation, or a UNIX operating systems available from varioussources. Many other operating systems may be used, and examples are notlimited to any particular operating system.

The processor 210 and operating system together define a computerplatform for which application programs in high-level programminglanguages are written. These component applications may be executable,intermediate, bytecode or interpreted code which communicates over acommunication network, for example, the Internet, using a communicationprotocol, for example, TCP/IP. Similarly, aspects may be implementedusing an object-oriented programming language, such as .Net, Ruby,Objective-C, SmallTalk, Java, C++, Ada, C# (C-Sharp), Python, orJavaScript. Other object-oriented programming languages may also beused. Alternatively, functional, scripting, or logical programminglanguages may be used.

Additionally, various aspects and functions may be implemented in anon-programmed environment. For example, documents created in HTML, XMLor other formats, when viewed in a window of a browser program, canrender aspects of a graphical-user interface or perform other functions.Further, various examples may be implemented as programmed ornon-programmed elements, or any combination thereof. For example, a webpage may be implemented using HTML while a data object called fromwithin the web page may be written in C++. Thus, the examples are notlimited to a specific programming language and any suitable programminglanguage could be used. Accordingly, the functional components disclosedherein may include a wide variety of elements (e.g., specializedhardware, executable code, data structures or objects) that areconfigured to perform the functions described herein.

In some examples, the components disclosed herein may read parametersthat affect the functions performed by the components. These parametersmay be physically stored in any form of suitable memory includingvolatile memory (such as RAM) or nonvolatile memory (such as a magnetichard drive). In addition, the parameters may be logically stored in apropriety data structure (such as a database or file defined by a usermode application) or in a commonly shared data structure (such as anapplication registry that is defined by an operating system). Inaddition, some examples provide for both system and user interfaces thatallow external entities to modify the parameters and thereby configurethe behavior of the components.

Runtime Object User Interfaces

FIGS. 7-12, 14-17, and 21-24 illustrate example interface screensincluding representations of GUI objects, variable-selection objects,and poll objects provided according to various embodiments. It isappreciated that other interface elements may be provided, andembodiments described herein are not limited to a particular interfaceelement, object, screen, or set of screens. FIG. 3 illustrates a mobilecomputing device 300 providing by a user interface, such as the userinterface 108 describe above with reference to FIG. 1. As shown in FIG.3, the user interface displays a message thread that includes statictext and a static photo or video. In FIG. 4, a user interface providedby a mobile computing device 400 displays static text and a staticemoticon or sticker within the message thread. In FIG. 5, a userinterface provided by a mobile computing device 500 displays emoticonsor animated emoticons within the message thread. The appearance ofanimated emoticons changes overtime. However, a user may not specifyattributes of the animation sequence and the animated emoticons may notmove beyond their content frames within the message thread. In addition,the animated emoticons are unaware of other components within themessage thread, and therefore do not interact with the other components.

In FIG. 6, a user interface provided by a mobile computing device 600displays icons that move along the displayed portion of a messagethread. As illustrated in FIG. 6, the user interface is configured todisplay the moving icons, which mimic birthday cakes, in response toreceiving an input string including “happy birthday!” Unfortunately,these moving icons are not user configurable and cannot be activated bythe user directly as they are derived from the input string. Inaddition, these moving icons are unaware of, and do not interact with,other components in the message thread and disappear from the messagethread after the animation finishes.

Some embodiments implement one or more interactive or dynamic GUIobjects. These GUI objects may be activated by a user, such as the user102 described above with reference to FIG. 1. The user may activate aGUI object via a drag and drop operation from an object palette to amessage thread or, in some embodiments, by inputting specific textsequences into a user interface, such as the user interface 108described above with reference to FIG. 1. FIG. 7 illustrates oneembodiment in which a user interface provided by a mobile computingdevice 700 is configured to implement a GUI object presenting arepresentation 702 within a message thread. As illustrated in FIG. 7,when executing according to this configuration, the representation 702of the GUI object moves outside of its frame within the message thread.This movement may extend to any portion (e.g., visible or invisible) ofthe message thread or even beyond the message thread. Further thismovement may be displayed on any of the devices engaged in the messagethread.

FIG. 8 illustrates another embodiment in which a user interface providedby a mobile computing device 800 is configured to implement first andsecond GUI objects respectively presenting representations 802 and 804within a message thread. As illustrated in FIG. 8, when executingaccording to this configuration, the representation 802 of the first GUIobject moves outside of its frame within the message thread toward aframe of the representation 804 of the second GUI object. Upon therepresentation 802 of the first GUI object reaching a predefinedproximity to the representation 804 the second GUI object, therepresentation 802 of the first GUI object acts upon the representation804 of the second GUI object. One example of an action process executedby the first GUI object is described further below with reference toFIG. 19. In response to this action, the representation 804 of thesecond GUI object may react to the representation 802 of the first GUIobject. One example of a reaction process executed by the second GUIobject is described further below with reference to FIG. 20. The actionsand reactions of the representations 802 and 804 of the first and secondGUI objects may be displayed on any of the devices engaged in themessage thread.

FIG. 9 illustrates another embodiment in which a user interface providedby a mobile computing device 900 is configured to implement a GUI objectpresenting a representation 902 within a message thread. As illustratedin FIG. 9, when executing according to this configuration, therepresentation 902 of the GUI object moves outside of its frame withinthe message thread toward another component within the message thread(i.e., a user icon 904). Upon the representation 902 of the GUI objectreaching a predefined proximity to the user icon 904, the representation902 of the GUI object acts upon the user icon 904. These actions may bedisplayed on any of the devices engaged in the message thread.

In some embodiments, the GUI object is configured to cause itsrepresentation 902 to act upon other components within the messagethread. Examples of these components include emoticons, stickers, usernames, background images, message bubbles, text boxes, images, videos,sounds, keyboards, title bars, status bars, edges of the user interface,or any other user interface element.

FIG. 10 illustrates another embodiment in which a user interfaceprovided by a mobile computing device 1000 is configured to implementfirst and second GUI objects respectively presenting representations1002 and 1004 within a message thread. As illustrated in FIG. 10, whenexecuting according to this configuration, the representation 1002 ofthe first GUI object moves outside of its frame within a GUI objectpalette toward the representation 1004 of the second GUI object inresponse to a selection and drag operation by a user. In some toembodiments, upon the representation 1002 of the first GUI objectreaching a predefined proximity to the representation 1004 of the secondGUI object and being dropped by the user (and thus being activated bythe user), the first GUI object acts upon the representation 1004 of thesecond GUI object according to its default values.

In other embodiments, such as an embodiment illustrated with referenceto FIG. 11, upon the representation 1002 of the first GUI objectreaching a predefined proximity to the representation 1004 of the secondGUI object and being dropped by the user (and thus being activated bythe user), the first GUI object presents a modal window 1100 within theuser interface provided by the mobile computing device 1000. The modalwindow prompts the user for input selecting either a send button or aconfig button. In response to receiving input selecting the send button,the representation 1002 of the first GUI object acts upon therepresentation 1004 of the second GUI object. This action may bedisplayed on any of the devices engaged in the message thread.

With reference to FIG. 12, in response to receiving input selecting theconfig button, the first GUI object displays a modal window 1200 withinthe user interface provided by the mobile computing device 1000. Thismodal window 1200 enables the user to configure the configurableparameters of the first GUI object. As described further below, theseconfigurable parameters enable the user to control the target of thefirst GUI object, the route the representation 1002 of the first GUIobject will traverse, the actions the first GUI object will perform, thetiming of the actions, and the animation displayed by the representation1002 of the first GUI object.

In this embodiment, the modal window 1200 prompts the user for inputselecting a change action button, a change action type button, a changetiming button, a change effects button, or a send button. In response toreceiving input selecting the change action button, the first GUI objectdisplays a set of user interface elements through which the first GUIobject receives changes to default values of configurable parametersthat control an action performed by the first GUI object. The actionperformed by the first GUI object may include animation (with or withoutsound or vibration) displayed upon the representation 1002 of the firstGUI object reaching its target. Example animations include a kiss,shaking hands, burning, exploding, shouting, kicking, dancing, tearingthe background, changing the background, transforming size, transformingshape, transforming color, and displaying an advertisement in themessage thread. Animations may be implemented as a sequence of frames.

In response to receiving input selecting the change action type button,the first GUI object displays a set of user interface elements throughwhich the first GUI object receives changes to default values ofconfigurable parameters that control a type of action performed by thefirst GUI object. Types of actions include one-way actions and multi-wayactions. When executing under a one-way action configuration, therepresentation 1002 of the first GUI object acts upon another component,but does not react to any movement or action performed by the othercomponent. When executing under a multi-way action configuration, therepresentation 1002 of the first GUI object acts upon another component,and reacts to any movement or reactions that are performed by one ormore other components. The reaction performed by the first GUI objectmay include animation (with or without sound or vibration). Exampleanimations include a resistance to burning, escape, blush, use aprotective shield, change color, change shape, transform, bounce,transform size, transform shape, transform color, and displaying anadvertisement in the message thread.

In response to receiving input selecting the change timing button, thefirst GUI object displays a set of user interface elements through whichthe first GUI object receives changes to default values of configurableparameters that control timing of an action performed by the first GUIobject.

This timing may be a duration of an animation or a delay beforeexecuting the animation or some other action (e.g., transmitting asentiment indicator to an object in FACEBOOK or purchasing an itemassociated with the first GUI object or a component acted upon by thefirst GUI object).

In response to receiving input selecting the change effects button, thefirst GUI object displays a set of user interface elements through whichthe first GUI object receives changes to default values of configurableparameters that control effects of an action performed by the first GUIobject. These effects may include transforms or filters applied to therepresentation 1002 of the first GUI object or the target of an actionperformed by the first GUI object.

In response to receiving input selecting the send button, therepresentation 1002 of the first GUI object acts upon the representation1004 of the second GUI object. This action may be displayed on any ofthe devices engaged in the message thread.

FIG. 14 illustrates another embodiment in which a user interfaceprovided by a mobile computing device 1400 is configured to implement aset of variable-selection objects presenting representations 1402, 1404,1406, and 1408. As illustrated in FIG. 14, when executing according tothis configuration, the representation 1402 of a firstvariable-selection object includes a circular button that accepts votingselections from a user. More particularly, each of the representations1402, 1404, 1406, and 1408 enable the user to vote for content preferredby the user. In this embodiment, each of the set of variable-selectionobjects is configured to acknowledge a first instance of a selectionwhere the variable-selection object receives an indication that the usertouched its corresponding representation and maintained contact for afirst predetermined duration.

FIG. 15 illustrates another embodiment in which a user interfaceprovided by the mobile computing device 1400 is configured to implementa set of variable-selection objects presenting representations 1502,1504, 1506, and 1508. As illustrated in FIG. 15, a firstvariable-selection object represented by the representation 1504 hasacknowledged a first selection. In addition, a second variable-selectionobject represented by the representation 1502 is in the process ofreceiving a selection. As shown in FIG. 15, the secondvariable-selection object is configured to respond to a touch and holdof the representation 1502 performed by the user by filling therepresentation 1502 from bottom to top with a color different from theunselected color of the representation 1502. According to thisembodiment, so long as the user maintains a hold on the representation1502, the second variable-selection object will continue to fill therepresentation 1502 until it is completely filled. Responsive to therepresentation 1502 being completely filled, the variable-selectionobject will acknowledge the selection and adjust the representation 1502to mimic a checkbox, as illustrated in the representation 1504. In someembodiments, the color of the representation 1504 may change based onthe number of selections on the representation 1504.

FIG. 16 illustrates another embodiment in which a user interfaceprovided by the mobile computing device 1400 is configured to implementa variable-selection object presenting representations 1604 a and 1604 bat different times. At a first time, illustrated by the representation1604 a, the variable-selection object has acknowledged 1 selection. At asecond time, illustrated by the representation 1604 b, thevariable-selection object has acknowledged 10 selections. In someembodiments illustrated by FIG. 16, the variable-selection objectrequires a hold of an adjusted duration prior to acknowledging eachselection of a series of selections. In some embodiments, the durationincreases linearly after each acknowledged selection. In otherembodiments, the duration increases exponentially after eachacknowledged selection. In still other embodiments, the durationadjustment is based on a configurable parameter and adjusts according toa user defined function having an independent variable equal to thenumber of previously acknowledged selections. In still other toembodiments, the duration adjustment is based on a sequence of numbersor one or more lookup tables.

FIG. 17 illustrates another embodiment in which a user interfaceprovided by a mobile computing device 1700 is configured to implementadditional user interface elements based on a state of a set ofvariable-selection objects. As illustrated in FIG. 17, the userinterface is directed to analyzing user preference poll results. Theuser interface includes a switch box 1702, a text box 1704, a rank icon1706, a background area 1708, and a badge icon 1710. The switch box 1702is configured to receive input from a user selecting either “total” or“unique” voting counts. When “total” is selected in the switch box 1702,the user interface ranks the content voted on by the total number ofvotes received (e.g., the total number of acknowledged selections). When“unique” is selected in the switch box 1702, the user interface ranksthe content voted on by the total number of users who voted for thecontent (e.g., acknowledged selections over 1 are not used for ranking).

In an embodiment illustrated in FIG. 17, the text box 1704 is configuredto display a unique vote count (e.g., the total number of users whogenerated acknowledged selections). The rank icon 1706 (and each of theother rank icons below it) is configured to display the current rank ofthe content displayed adjacent to it. The background area 1708 isconfigured to change color to highlight content for which the user hasgenerated acknowledged selections. The badge icon 1710 is configured todisplay a number of acknowledged selections of this content generated bythe user. In other embodiments, the vote counts may be updated anddisplayed in real time adjacent to a set of variable-selection objects.In these embodiments, the mobile computing device may update the votecount for a variable-selection object as the variable-selection objectreceives a selection.

FIG. 21 illustrates another embodiment in which a user interfaceprovided by a mobile computing device 2100 is configured to implement apoll object presenting a representation 2102 within a message thread. Asillustrated in FIG. 21, when executing according to this configuration,the representation 2102 includes text descriptive of the subject of thepoll (e.g., “Buddies what do you want to eat for dinner”), two optionsdisplayed as an image and accompanying text (e.g., “Sushi” and“Hamburger”), a count of selections for each option (“5 votes” and “1vote”), and a representation (e.g. a badge icon) of each user whoselected for each option. In this embodiment, the representation 2012 isconfigured to receive input selecting one or more of the options.Responsive to receiving the input, the poll object records to theselection of the option and updates the image of the selected option,the count of selections for the selected option, and adds arepresentation of the user who selected the option to the representationof each user who selected for the option. FIG. 22 illustrates therepresentation 2012 after the poll object acknowledges the selection ofthe “Hamburger” option. As shown in FIG. 22, the “Hamburger” option nowincludes an indication that it was selected (e.g., a checkmark), thecount of selections for the “Hamburger” option has been increased by 1,and the representation of each user who selected the “Hamburger” optionincludes a representation of the user who selected the option. Theseupdates may be displayed on any of the devices engaged in the messagethread. In this way, the poll object allows users communicating via acommon conduit to express preferences from a set of options.

In at least one embodiment, the representation 2102 may be configured toreceive multiple votes from a user. The poll object may keep track ofunique votes and total votes for each option. The options may bedisplayed as representations of variable-selection objects, and requireinputs of predetermined durations to successfully receive a voteselection. In other embodiments, the representation 2102 may beconfigured to receive a first vote from a user on a first option (e.g.,“Sushi”) and process the first vote. The representation 2102 may thenreceive a second vote on a second option (e.g., “Hamburger”) and processthe second vote by subtracting the vote away from the first option andadding a vote to the second option. A representation of the user mayalso move from the first option to the second option and the totalnumber of votes on each option may be updated. In one example, if afirst option receives multiple votes from a user and then a secondoption receives a vote from the same user, the multiple votes may besubtracted from the first option.

In some implementations, a poll object may include multiple options thatmay be selected. For example, the poll object may allow users to votefor three out of five options. The poll object may also allow users torank options (e.g., click on options in an order to rank them by thatorder). In one example, a poll may include representations of tenwedding dresses and the poll object may be configured to receive fiveordered votes for the dresses. The representation 2102 may receive up tofive ordered votes from different users and display voting results. Eachvoting rank may be associated with a weight (e.g., a dress ranked numberone by a user may have a weight of five but a dress ranked number 5 by auser may have a weight of one). In the results, the poll object maydisplay the wedding dresses in order from highest weight to lowestweight. The results may be displayed below the vote options. In anotherexample, the current number rank of each dress may be displayed withinthe option for to the dress. In other examples, a user may click andhold the representation 2102 and the poll object may be configured tochange the representation 2102 to a view of the voting results.

In some embodiments, the poll object presenting the representation 2102may be configured to present the representation 2102 as the most recentmessage in the message thread while the poll object is active. Forexample, in the message thread illustrated in FIG. 31, therepresentation 2102 is at the bottom of the message thread. In theseembodiments, subsequent messages may be presented above therepresentation 2102 until the voting process is complete. In someexamples, the poll object may be configured to receive a number of votesto complete. In other examples, the poll object may be configured tocomplete after a predetermined period of time. In further examples, thepoll object may complete when the representation 2102 receives inputfrom all of the users in the message thread. In another example the userwho started the poll or a user designated as an administrator in themessage thread may choose to end a poll. The poll object may beconfigured to receive a click on the representation 2102 to end the pollfrom a user. The poll object may update the representation 2102 inresponse to a user input. The user input may include a click on therepresentation 2102, a click and hold on an option in the representation2102, a user interface object with an option in the representation 2102as a target, and a text input for an option (e.g., the message threadmay receive “Hamburger” from a user and update the representation 2102based on the text input).

In other embodiments, the poll object presenting the representation 2102may be configured to present the representation 2102 as a pop-up orfloating object in the message thread, such that users have to replybefore going back to the message thread. In some examples, wherein therepresentation 2102 is not stuck in place as the most recent message inthe message thread, a user may move the representation 2102 back to themost recent message spot. The representation may be moved by a click onthe representation 2102 by a creator of the poll object or anadministrator or a drag-and-drop of the representation 2102. In someexamples, the representation 2102 may automatically be moved to the topvia a received message. For example, a message (e.g., “poll,” “vote,”“bump,” etc.) may be inputted by a user to bring the representation 2102to the most recent spot in a message thread.

A representation of a poll object may be structured in a variety ofways. For example, the poll object may be configured to display arepresentation of the poll object that displays options within ahorizontal layout. FIG. 23 illustrates a representation 2302 of a pollobject implemented by a mobile device 2300 that is configured to displaya representation having a horizontal layout. As shown in FIG. 23, eachoption is positioned to the left or right of the to other. In anotherexample, a poll object may be configured to display a representation ofthe poll object that displays options within a vertical layout. FIG. 24illustrates a representation 2402 of a poll object implemented by amobile device 2400 that is configured to display a representation havinga vertical layout. As shown in FIG. 24, each option is positionedadjacent to the top or bottom of the other. While the description ofFIGS. 7-12, 14-17, and 21-24 focus on embodiments directed to mobilecomputing devices, embodiments disclosed herein may be implemented usingany computer system and are, therefore, not limited in scope to mobilecomputing devices.

Object Processes

FIGS. 13, 18-20, and 25 illustrate example processes executed by GUIobjects, variable-selection objects, and poll objects. As describedabove with reference to FIG. 1, some embodiments include GUI objectsthat perform processes that execute one or more actions within segments.The GUI objects that perform these processes may execute within a widevariety of computer systems, such as the enhanced messaging system 100described above with reference to FIG. 1. FIG. 13 illustrates an exampleexecution process 1300 in accord with the embodiments disclosed herein.As illustrated in FIG. 13, the execution process 1300 may include anynumber of distinct execution segments. The execution process 1300 beginsat 1302.

In act 1304, a first segment is executed. The first segment may includeexecution of an action by a GUI object, such as the GUI object 126described above with reference to FIG. 1. This action may includemovement of a representation of the GUI object within a message thread,animation of the representation, or performing an action involvinganother component of the message thread. One example of an actionprocess executed by a GUI object is described further below withreference to FIG. 19. As illustrated in FIG. 13, the first segment mayrepeat through one or more iterations.

In acts 1306, 1308 and 1310 multiple additional segments are executed.Each of these segments may include execution of an action by a GUIobject. This action may include movement of a representation of the GUIobject within a message thread, animation of the representation, orperforming an action involving another component of the message thread.Each of the multiple other segments may repeat through one or moreiterations.

The execution process 1300 ends at 1312. Processes in accord with theexecution process 1300 enable computer systems to displayrepresentations of GUI objects that are to highly engaging due to theirdynamic and interactive nature. Thus such processes increase theentertainment value and enjoyment of users.

As described above with reference to FIG. 1, some embodiments includevariable-selection objects that perform processes that vary conditionsfor acknowledgement of selections between selections attempted inseries. The variable-selection objects that perform these processes mayexecute within a wide variety of computer systems, such as the enhancedmessaging system 100 described above with reference to FIG. 1. FIG. 18illustrates an example selection process 1800 in accord with theembodiments disclosed herein. The selection process 1800 begins at 1802.

In act 1804, a variable-selection object, such as the variable-selectionobject 128 described above with reference to FIG. 1, receives input froma user indicating that the user is attempting to select a representationpresented by the variable-selection object. For example, thevariable-selection object may receive input indicating that the user hastouched the representation. In act 1806, the variable-selection objectanimates its representation to indicate that the attempted selection isin process. In act 1808, the variable-selection object acknowledges theattempted selection once the process has completed (e.g., once theattempted selection has been maintained for a predetermined duration).In act 1810, the variable-selection object records the acknowledgedselection and updates its representation to indicate the acknowledgedselection to the user and proceeds to 1812. Updating the representationto indicate the acknowledged selection may include alteration of thecolor or shape of the representation.

In act 1814, the variable-selection object receives input (or a lackthereof) that indicates the attempted selection has been discontinued.Examples of discontinuities within an attempted selection includecancelation by an operating system or application (e.g., view disappearsor an incoming call appears), a touch up is detected outside therepresentation, a touch up is detected inside the representation beforethe selection has been acknowledged, a touch is dragged outside thevicinity of the representation, and a touch is detected outside therepresentation. In act 1816, the variable-selection object resets itsrepresentation to pre-animation state and, optionally, displays an erroror instructional message that communicates user actions required tocomplete a selection and proceeds to 1818.

The selection process 1800 ends at either 1812 or 1818. Processes inaccord with the execution process 1800 enable computer systems todisplay representations of variable-selection objects that are highlyengaging due to their dynamic nature. Thus such processes increase theentertainment value of products including them.

As described above with reference to FIGS. 8 and 13, some embodimentsinclude GUI objects that perform processes that execute actions within amessage thread. The GUI objects that perform these processes may executewithin a wide variety of computer systems, such as the enhancedmessaging system 100 described above with reference to FIG. 1. FIG. 19illustrates an example action process 1900 in accord with theembodiments disclosed herein. The action process 1900 begins at 1902.

In act 1904, a GUI object, such as the GUI object 126 described abovewith reference to FIG. 1, determines whether it can identify its targetwithin the message thread. This identification may be accomplished via avariety of component traits described above with reference to the targetconfigurable parameter. If so, the GUI object executes act 1906.Otherwise, the GUI object executes act 1914. In the act 1914, the GUIobject presents and animates its representation within the messagethread according to its default configuration. In the act 1906, anycomponents affected by the GUI object's imminent action are notified ofthe GUI object, and its characteristics. In act 1908, the GUI objectpresents and animates its representation with the message thread. In act1910, the GUI object scrolls the screen as needed to continue theanimation (e.g., where the animation leads to locations within themessage thread that are not visible in the display screen prior toscrolling). In act 1912, the GUI object finishes the animation of itsrepresentation and any other configured actions. Where the animation hasa negative connotation (e.g., burning), the GUI object may execute anaction that transmits sentiment information regarding the target to athird party system, such as one of the third party systems 124 describedabove with reference to FIG. 1 (e.g., FACEBOOK). Alternatively, whereinthe animation has a positive connotation (e.g., kiss), the GUI objectmay execute an action that initiates a purchase request with a thirdparty system.

The execution process 1900 ends at 1916. Processes in accord with theexecution process 1900 enable computer systems to displayrepresentations of GUI objects that are highly engaging due to theirdynamic and interactive nature. Thus such processes increase theentertainment value and enjoyment of users.

As described above with reference to FIG. 8, some embodiments includeGUI objects that perform processes that execute reactions within amessage thread. The GUI objects that perform these processes may executewithin a wide variety of computer systems, such as the enhancedmessaging system 100 described above with reference to FIG. 1. FIG. 20illustrates an example action process 2000 in accord with theembodiments disclosed herein. The reaction to process 2000 begins at2002.

In act 2004, a first GUI object, such as the GUI object 126 describedabove with reference to FIG. 1, receives a notification that arepresentation of a second GUI object, such as the GUI object 130described above with reference to FIG. 1, may affect a representation ofthe first GUI object. This notification may be received from the secondGUI object. In act 2006, the first GUI object determines whether therepresentation of the second GUI object will come with a predefinedproximity of the representation of the first GUI object. If so, thefirst GUI object executes act 2008. Otherwise, the first GUI objectexecutes act 2014. In the act 2014, the first GUI object animates itsrepresentation within the message thread according to its defaultconfiguration. In the act 2008, the first GUI object waits until therepresentation of the second GUI object enters the predefined proximityto the representation of the first GUI object. In act 2010, the firstGUI object presents and animates its representation with the messagethread according to its reaction configuration. In act 2012, the firstGUI object finishes the animation of its representation and any otherconfigured actions.

The execution process 2000 ends at 2016. Processes in accord with theexecution process 2000 enable computer systems to displayrepresentations of GUI objects that are highly engaging due to theirdynamic and interactive nature. Thus such processes increase theentertainment value and enjoyment of users.

As described above with reference to FIG. 1, some embodiments includepoll objects that perform processes that poll users for selection ofpreferences. The poll objects that perform these processes may executewithin a wide variety of computer systems, such as the enhancedmessaging system 100 described above with reference to FIG. 1. FIG. 25illustrates an example polling process 2500 in accord with theembodiments disclosed herein. As illustrated in FIG. 25, the pollingprocess 2500 includes receiving a selection and updating poll resultsdisplayed on each user interface. The execution process 2500 begins at2502.

In act 2504, input is received that indicates a selection of apreference. In some embodiments, this input is received via a userinterface, such as the user interface 108 described above with referenceto FIG. 1, and provided to a poll object, such as the poll object 132described above with reference to FIG. 1. In act 2506, updated resultsare transmitted to all devices engaged in the message threadimplementing the poll object. In some embodiments, the poll objectprocesses the input it received in the act 2504 and transmits updatedpoll results to other poll objects executing on other devices engaged inthe message to thread. Upon receipt of the updated poll results, theother poll objects may display the updated poll results within theirrespective representations within the message thread.

The execution process 2500 ends at 2508. Processes in accord with theexecution process 2500 enable computer systems to displayrepresentations of poll objects that are highly engaging due to theirdynamic and interactive nature. Thus such processes increase theentertainment value and enjoyment of users.

Processes 1300, 1800, 1900, 2000, and 2500 each depict one particularsequence of acts in a particular embodiment. The acts included in theseprocesses may be performed by, or using, one or more computer systemsspecially configured as discussed herein. Some acts are optional and, assuch, may be omitted in accord with one or more embodiments.Additionally, the order of acts can be altered, or other acts can beadded, without departing from the scope of the embodiments describedherein. Furthermore, as described above, in at least one embodiment, theacts are performed on particular, specially configured machines, namelyan enhanced messaging system configured according to the examples andembodiments disclosed herein.

Having thus described several aspects of at least one example, it is tobe appreciated that various alterations, modifications, and improvementswill readily occur to those skilled in the art. For instance, examplesand embodiments disclosed herein may also be used in other contexts.Such alterations, modifications, and improvements are intended to bepart of this disclosure, and are intended to be within the scope of theexamples discussed herein. Accordingly, the foregoing description anddrawings are by way of example only.

What is claimed is:
 1. A system for providing voting interactions in amulti-party messaging application comprising: a memory; at least oneprocessor coupled to the memory; a user interface component executed bythe at least one processor and configured to: present an interactiverepresentation of a poll object in the multi-party messagingapplication; receive, from at least one user of the multi-partymessaging application, a vote to for an option of a plurality of optionsin the representation of the poll object; and update a vote countassociated with the option in the representation of the poll object. 2.The system according to claim 1, wherein the user interface component isfurther configured to: receive a new option from a user; and add the newoption to the plurality of options in the representation of the pollobject.
 3. The system according to claim 1, wherein the user interfacecomponent is further configured to present an indication of the receivedvote on the option.
 4. The system according to claim 1, wherein the userinterface component is further configured to present subsequent messagesabove the representation.
 5. The system according to claim 1, whereinthe user interface component is further configured to present theplurality of options horizontally in the multi-party messagingapplication.
 6. The system according to claim 5, wherein the userinterface component is further configured to present a number of votesassociated with each option of the plurality of options under theoption.
 7. The system according to claim 1, wherein the user interfacecomponent is further configured to present the plurality of optionsvertically in the multi-party messaging application.
 8. The systemaccording to claim 7, wherein the user interface component is furtherconfigured to present a number of votes associated with each option ofthe plurality of options to the right of the option.
 9. The systemaccording to claim 1, wherein the poll object includes at least onevariable-selection object.
 10. The system according to claim 1, whereinthe user interface component is further configured to receive aplurality of votes from a user for the option.
 11. The system accordingto claim 10, wherein the user interface component is further configuredto track unique votes and total votes.
 12. The system according to claim1, wherein the user interface component is further configured to receivethe vote for the option of the plurality of options from a userinterface object.
 13. The system according to claim 12, wherein the userinterface object includes an animation.
 14. The system according toclaim 1, wherein the user interface component is further configured toreceive the vote from a text input of the at least one user.
 15. Thesystem according to claim 1, wherein the user interface component isfurther configured to display votes received from other users in themulti-party messaging application.
 16. The system according to claim 1,wherein the user interface component is further configured to displayrepresentations of the other users in the representation of the pollobject.
 17. The system according to claim 1, wherein the user interfacecomponent is further configured to present a text message and mediacontent in the representation.
 18. The system according to claim 1,wherein the user interface component is further configured to: receive asecond vote for a second option of a plurality of options in therepresentation of the poll object; and update a second vote countassociated with the second option in the representation of the pollobject.
 19. A graphical user interface (GUI) for providing a multi-partymessaging application, the graphical user interface comprising a displayon a computer system executed by at least one processor, wherein the GUIis configured to: present an interactive representation of a poll objectin the multi-party messaging application; receive, from at least oneuser, a vote for an option of a plurality of options in therepresentation of the poll object; and update a vote count associatedwith the option in the representation of the poll object.
 20. A methodfor providing a multi-party messaging application, the methodcomprising: presenting, by a user interface component on a mobiledevice, an interactive representation of a poll object in themulti-party messaging application; receiving, from at least one user tothe user interface component, a vote for an option of a plurality ofoptions in the representation of the poll object; and updating, by theuser interface component, a vote count associated with the option in therepresentation of the poll object.